package lambda;

/**
 * lambda和匿名内部类区别
 * <p>
 * 1-匿名内部类是类层面的类型
 * 2- lambda实现接口，jvm层面还是方法层面的类型
 *
 * @author <a href="mailto:sjj@jianzhimao.com">mojo</a>
 * copyright (C), 2013-2022, 广州九尾信息科技有限公司
 * @date 2022/3/23 14:13
 */
public class Lambda2 {
    Runnable run1 = new Runnable() {
        @Override
        public void run() {
            System.out.println("匿名>>>");
            //this是匿名内部类实例
            System.out.println(this);
        }
    };
    Runnable run2 = () -> {
        System.out.println("lambda>>>");
        //this是lambda2实例，佐证了lambda在jvm层面只是一个类的私有方法
        System.out.println(this);
    };

    public static void main(String[] args) {
        Lambda2 l = new Lambda2();
        l.run1.run();
        l.run2.run();
    }

    @Override
    public String toString() {
        return "lambda2";
    }
}
